package edu.codink.xq.center.util;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;

import org.springframework.context.ApplicationContext;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.support.WebApplicationContextUtils;

import edu.codink.common.base.ContextUtil;

/**
 * 扩展spring的ContextLoaderListener，在启动的时候存储一个spring的WebApplicationContext对象
 * 这样在其他的非spring bean的对象中也可以调用spring bean，这些非spring对象本身是无法直接
 * 构造ApplicationContext的，因为ApplicationContext的构造是需要ServletContext
 */
public class ExtendContextLoaderListener extends ContextLoaderListener
{

	@Override
	public void contextInitialized(ServletContextEvent event)
	{
		super.contextInitialized(event);
		ServletContext servletContext = event.getServletContext();
		ApplicationContext applicationContext = WebApplicationContextUtils
				.getWebApplicationContext(servletContext);
		ContextUtil.setApplicationContext(applicationContext);
	}
}
